1. Field of the Invention
The present invention is generally related to integrated circuit devices, and more particularly, to methods, systems and design structures for the field of image processing, and more specifically to vector units for supporting image processing.
2. Description of the Related Art
The process of rendering two-dimensional images from three-dimensional scenes is commonly referred to as image processing. A particular goal of image processing is to make two-dimensional simulations or renditions of three-dimensional scenes as realistic as possible. This quest for rendering more realistic scenes has resulted in an increasing complexity of images and innovative methods for processing the complex images.
Two-dimensional images representing a three-dimensional scene are typically displayed on a monitor or some type of display screen. Modern monitors display images through the use of pixels. A pixel is the smallest area of space which can be illuminated on a monitor. Most modern computer monitors use a combination of hundreds of thousands or millions of pixels to compose the entire display or rendered scene. The individual pixels are arranged in a grid pattern and collectively cover the entire viewing area of the monitor. Each individual pixel may be illuminated to render a final picture for viewing.
One method for rendering a real world three-dimensional scene onto a two-dimensional monitor using pixels is called rasterization. Rasterization is the process of taking a two-dimensional image represented in vector format (mathematical representations of geometric objects within a scene) and converting the image into individual pixels for display on the monitor. Rasterization is effective at rendering graphics quickly and using relatively low amounts of computational power; however, rasterization suffers from some drawbacks. For example, rasterization often suffers from a lack of realism because it is not based on the physical properties of light, rather rasterization is based on the shape of three-dimensional geometric objects in a scene projected onto a two-dimensional plane. Furthermore, the computational power required to render a scene with rasterization scales directly with an increase in the complexity of objects in the scene to be rendered. As image processing becomes more realistic, rendered scenes become more complex. Therefore, rasterization suffers as image processing evolves, because rasterization scales directly with complexity.
Another method for rendering a real world three-dimensional scene onto a two-dimensional monitor using pixels is called ray tracing. The ray tracing technique traces the propagation of imaginary rays, which behave similar to rays of light, into a three-dimensional scene which is to be rendered onto a computer screen. The rays originate from the eye(s) of a viewer sitting behind the computer screen and traverse through pixels, which make up the computer screen, towards the three-dimensional scene. Each traced ray proceeds into the scene and may intersect with objects within the scene. If a ray intersects an object within the scene, properties of the object and several other contributing factors, for example, the effect of light sources, are used to calculate the amount of color and light, or lack thereof, the ray is exposed to. These calculations are then used to determine the final color of the pixel through which the traced ray passed.
The process of tracing rays is carried out many times for a single scene. For example, a single ray may be traced for each pixel in the display. Once a sufficient number of rays have been traced to determine the color of all of the pixels which make up the two-dimensional display of the computer screen, the two-dimensional synthesis of the three-dimensional scene can be displayed on the computer screen to the viewer.
Ray tracing typically renders real world three-dimensional scenes with more realism than rasterization. This is partially due to the fact that ray tracing simulates how light travels and behaves in a real world environment, rather than simply projecting a three-dimensional shape onto a two-dimensional plane as is done with rasterization. Therefore, graphics rendered using ray tracing more accurately depict on a monitor what our eyes are accustomed to seeing in the real world.
Furthermore, ray tracing also handles increasing scene complexity better than rasterization. Ray tracing scales logarithmically with scene complexity. This is due to the fact that the same number of rays may be cast into a scene, even if the scene becomes more complex. Therefore, ray tracing does not suffer in terms of computational power requirements as scenes become more complex unlike rasterization.
However, one major drawback of ray tracing is the large number of floating point calculations, and thus increased processing power, required to render scenes. This leads to problems when fast rendering is needed, for example, when an image processing system is to render graphics for animation purposes such as in a game console. Due to the increased computational requirements for ray tracing it is difficult to render animation quickly enough to seem realistic (realistic animation is approximately twenty to twenty-four frames per second).
Image processing using, for example, ray tracing, may involve performing both vector and scalar math. Accordingly, hardware support for image processing may include vector and scalar units configured to perform a wide variety of calculations. The vector and scalar operations, for example, may trace the path of light through a scene, or move objects within a three-dimensional scene. A vector unit may perform operations, for example, dot products and cross products, on vectors related to the objects in the scene. A scalar unit may perform arithmetic operations on scalar values, for example, addition, subtraction, multiplication, division, and the like.
The vector and scalar units may be pipelined to improve performance. However, performing vector operations may involve performing multiple iterations of multiple instructions which may be dependent on each other. Such dependencies between instructions may reduce the efficiency of the pipelined units. For example, several pipeline stages may be left unused in order for a first instruction to complete prior to execution of a second instruction.
Furthermore, image processing computations may involve heavy interaction between vector and scalar units. Because the prior art implements vector and scalar units that can be independently issued to, and having their own respective register files, transferring data between the units is usually very inefficient. For example, a scalar unit may load data from memory into its associated register file to perform a scalar operation. The results of the calculation may then be stored back in memory. Subsequently, the results from the scalar calculation may be loaded into a separate register file associated with a vector unit to perform a vector operation.
The transfer of data to and from memory to transfer the data between scalar and vector units, and the dependencies between instructions may introduce significant delays that slow down processing of images, thereby adversely affecting the ability to render realistic images and animation.
Therefore, what is needed are more efficient methods, systems, and articles of manufacture for performing ray tracing.